#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

int main()
{
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");
    fprintf(stdout, "hello normal message\n");

    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");
    fprintf(stderr, "hello error message\n");

    return 0;
}

//int main()
//{
//    int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    
//    // 重定向
//    dup2(fd, 1);
//
//    printf("fd: %d\n", fd);
//    printf("hello printf\n");
//    fprintf(stdout, "hello fprintf\n");
//
//    return 0;
//}

//int main()
//{
//    int fd = open("log.txt", O_RDONLY);
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    
//    // 输入重定向
//    dup2(fd, 0);
//    close(fd);
//    
//    char inbuffer[1024];
//    ssize_t s = read(0, inbuffer, sizeof(inbuffer) - 1);
//    if (s > 0)
//    {
//        inbuffer[s] = '\0';
//        printf("echo# %s", inbuffer);
//    }
//
//    close(0);
//    return 0;
//}

//int main()
//{
//    //int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    
//    // 重定向
//    dup2(fd, 1);
//    close(fd);
//
//    const char *msg = "hello linux\n";
//    int cut = 5;
//    while(cut--)
//    {
//        write(1, msg, strlen(msg));
//    }
//
//    close(1);
//    return 0;
//}

//int main()
//{
//    close(1);
//    int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//
//    const char *msg = "hello linux\n";
//    int cut = 5;
//    while(cut--)
//    {
//        write(1, msg, strlen(msg));
//    }
//
//    close(fd);
//    return 0;
//}

//int main()
//{
//    close(1);
//    int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//    if (fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    fprintf(stderr, "fd: %d\n", fd);
//    const char *msg = "hello linux\n";
//    int cut = 5;
//    while(cut--)
//    {
//        write(fd, msg, strlen(msg));
//    }
//
//    close(fd);
//    return 0;
//}


